草庐IT

C++ 行到 vector

全部标签

c++ - 将元素插入排序 vector 并保持元素排序

这个问题在这里已经有了答案:howdoyouinsertthevalueinasortedvector?(7个答案)关闭8个月前。所以我有一个vector,我希望元素始终被排序。我应该如何将一个元素插入该vector并在弹出它们时保持元素排序。然而,我查看了std::lower_bound,结果与我想要的相反。例如,这就是我想要的:当我弹出vector中的所有元素时,它应该是:12345。这意味着vector必须将它们存储为54321。如果使用下限,vector将它们存储为12345,并弹出为54321。此外,将传入比较仿函数,以便lower_bound函数使用比较仿函数。有没有办法取

c++ - 使用 for_each 和 bind 反转 vector 中的字符串

我在想如何在一个“简单的"行。是的,我知道使用自定义仿函数很容易,但我不能接受,它不能使用bind完成(至少我做不到)。#include#include#includestd::vectorv;v.push_back("abc");v.push_back("12345");std::for_each(v.begin(),v.end(),/*callstd::reverseforeachelement*/);编辑:非常感谢那些有趣的解决方案。但是,我的解决方案是不使用tr1::bind随VisualStudio2008功能包/SP1一起提供。我不知道为什么它不能像预期的那样工作,但事实就

c++ - 关于在 C++ 中将数组存储在 std::vector 中的问题

我不清楚以下内容。首先,这段代码可以正常编译:#includetypedefstruct{intx1,x2,x3,x4;}ints;typedefstd::vectorvec;intmain(){vecv;intsa={0,1,2,3};v.push_back(a);}以下代码几乎相同:#includetypedefstd::vectorvec;intmain(){vecv;inta[4]={0,1,2,3};v.push_back(a);}但它会抛出我将在最后包含的超长错误输出。为什么编译器对待这两个程序如此不同?这绝对不直观。这是在我使用g++编译的系统上抛出的编译器错误:[mat

c++ - 将任何数据类型序列化为 vector<uint8_t> - 使用 reinterpret_cast?

我没有在搜索中找到任何直接相关的内容,所以如果这是重复的,请原谅。我要做的是通过网络连接序列化数据。我的方法是将我需要传输的所有内容转换为std::vector并在接收方将数据解压缩到适当的变量中。我的方法是这样的:templateinlinevoidpack(std::vector&dst,T&data){uint8_t*src=static_cast(static_cast(&data));dst.insert(dst.end(),src,src+sizeof(T));}templateinlinevoidunpack(vector&src,intindex,T&data){cop

c++ - 指针 vector 的迭代器未正确解除引用

这是我的问题:我有一个std::vector用于跟踪子控件。我有这两个函数来返回迭代器:std::vector::const_iteratorAguiWidgetBase::getChildBeginIterator()const{returnchildren.begin();}std::vector::const_iteratorAguiWidgetBase::getChildEndIterator()const{returnchildren.end();}然后我像这样使用它:for(std::vector::const_iteratorit=box->getChildBeginIt

c++ - 获取 std::vector 的迭代器的更短方法

假设我有一个这样的vector。std::vector*something=newstd::vector;//bytheway,isthistherightwaytodothis?现在我想为此获得一个迭代器...所以我会这样做。std::vector::iteratoriter;但我发现它对我的代码来说有点太多了。我想知道,是否还有更简单的方法来请求迭代器而不考虑类型?我在想类似的东西。something::iteratoriter;//OK,don’tlaughatme,IamstillbeginningwithC++好吧,它显然失败了,但我猜你明白了。如何完成这个或类似的事情?

c++ - 特征值:从 vector 中减去标量

我在使用Eigen库时遇到错误,我想做的就是从Eigen::VectorXf中减去一个标量。所以,我的代码如下:#defineVECTOR_TYPEEigen::VectorXf#defineMATRIX_TYPEEigen::MatrixXf//myMatisofMATRIX_TYPEJacobiSVDjacobi_svd(myMat,ComputeThinU|ComputeThinV);constfloatoffset=3.0f;VECTOR_TYPEsingular_values=jacobi_svd.singularValues();VECTOR_TYPEtest=singul

c++ - 从 C 数组初始化 ublas vector

我正在使用C++ublas库编写Matlab扩展,我希望能够从Matlabinterpeter传递的C数组初始化我的ublasvector。如何在不(为了提高效率)显式复制数据的情况下从C数组初始化ublasvector。我正在寻找以下代码行的内容:usingnamespaceboost::numeric::ublas;intpv[10]={5,5,5,5,5,5,5,5,5,5};vectorv(pv);一般来说,是否可以从数组初始化C++std::vector?像这样:#include#includeusingnamespacestd;intmain(){intpv[4]={4,4

c++ - std::vector,线程安全,多线程

我在多线程应用程序中使用std::vector作为共享数据。我将线程封装在一个类中,例如classABC{public:doublea,b,c;};boost::mutexmutex1;classXYZ{public:XYZ(vector&pVector){ptrVector=&pVector;m_thread=boost::thread(&XYZ::Start,this);}~XYZ(){}voidStart();public:vector*ptrVector;boost::threadm_thread;};voidXYZ::Start(){try{while(1){boost::t

c++ - 应该一直使用 boost::ptr_vector 代替 std::vector 吗?

这只是我一直遇到的概念性问题。在我当前的项目中,感觉我过度使用了boostsmart_ptr和ptr_container图书馆。我正在创建boost::ptr_vectors在许多不同的对象中调用transfer()方法从一个boost::ptr_vector中移动某些指针给另一个。据我所知,清楚地显示堆分配对象的所有权很重要。我的问题是,是否需要使用这些boost库来创建属于某个对象的堆分配成员,然后通过get()使用指向这些成员的普通指针?在进行任何处理时。例如……一个游戏可能有一组属于它的Tiles。在boost::ptr_vector中创建这些图block可能有意义.当游戏结束